package edu.uoc.tdp.beans.conexio;

import edu.uoc.tdp.common.EOlympicsHelper;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author Grup TDP 1X4J
 */
public class Persona implements Serializable {

    private String foto;
    private String tipusDocumentId = EOlympicsHelper.TIPUS_ID[0];
    private String Document;
    private String tracte = EOlympicsHelper.TRACTE[0];
    private String nom;
    private String cognom1;
    private String cognom2;
    private String sexe = EOlympicsHelper.SEXE[0];     //s'inicialitza amb 'Sense dades'
    private Date datanaixement;
    private String adreca;
    private String localitat;
    private String provincia;
    private String pais;
    private String districtepostal;
    private String idioma;

    /**
     * Constructor de la classe Persona sense parametres
     */

    public Persona() {
    }

    /**
     * Constructor de la classe Persona amb paràmetres d'identificador
     *
     * @param pTipusDocumentId Identificador del Document
     * @param pDocument        Document identificatiu
     */

    public Persona(String pTipusDocumentId, String pDocument) {
        this.tipusDocumentId = pTipusDocumentId;
        this.Document        = pDocument;
    }

    /**
     * Constructor de la classe Persona amb els paràmetres bàsics
     *
     * @param pTipusDocumentId Identificador del Document
     * @param pDocument        Document Identificatiu
     * @param pTracte          Tracte (Sr. Sra., etc..)
     * @param pNom             Nom de la persona
     * @param pCognom1         Primer cognom
     * @param pCognom2         Segon cognom
     * @param pDatanaixement   Data naixement
     */

    public Persona(String pTipusDocumentId, String pDocument, String pTracte, 
                   String pNom, String pCognom1, String pCognom2, Date pDatanaixement) {
        setTipusDocumentId(pTipusDocumentId);
        this.Document        = pDocument;
        setTracte(pTracte);
        this.tracte          = pTracte;
        this.nom             = pNom;
        this.cognom1         = pCognom1;
        this.cognom2         = pCognom2;
        if (pDatanaixement != null) 
          this.datanaixement   = pDatanaixement;
    }

    /**
     * Constructor de la classe Persona amb tots els paràmetres
     *
     * @param pTipusDocumentId Identificador del Document
     * @param pDocument        Document Identificatiu
     * @param pTracte          Tracte (Sr. Sra., etc..)
     * @param pFoto            Nom de la fotografia
     * @param pNom             Nom de la persona
     * @param pCognom1         Primer cognom
     * @param pCognom2         Segon cognom
     * @param pSexe            Sexe
     * @param pDatanaixement   Data naixement
     * @param pAdreca          Lloc de residència - Adreça
     * @param pLocalitat       Lloc de residència - Localitat
     * @param pProvincia       Lloc de residència - Provincia
     * @param pPais            Lloc de residència - País
     * @param pDistrictepostal Lloc de residència - Districte postal
     * @param pIdioma          Idioma
     */

    public Persona(String pTipusDocumentId, String pDocument, String pTracte, 
                   String pFoto, String pNom, String pCognom1, String pCognom2, 
                   String pSexe, Date pDatanaixement, String pAdreca, String pLocalitat,
                   String pProvincia, String pPais, String pDistrictepostal, String pIdioma) {
        this.foto            = pFoto;
        setTipusDocumentId(pTipusDocumentId);
        this.Document        = pDocument;
        setTracte(pTracte);
        this.tracte          = pTracte;
        this.nom             = pNom;
        this.cognom1         = pCognom1;
        this.cognom2         = pCognom2;
        setSexe(pSexe);
        this.datanaixement   = pDatanaixement;
        this.adreca          = pAdreca;
        this.localitat       = pLocalitat;
        this.provincia       = pProvincia;
        this.pais            = pPais;
        this.districtepostal = pDistrictepostal;
        this.idioma          = pIdioma;
    }

    /**
     * Accessor de lectura del Document de la persona.
     *
     * @return Document de la persona
     */
    public String getDocument() {
        return Document;
    }

    /**
     * Accessor d'escriptura del Document de la persona.
     *
     * @param Document Document identificatiu de la persona
     */
    public void setDocument(String Document) {
        this.Document = Document;
    }

    /**
     * Accessor de lectura de l'adreça de la persona.
     *
     * @return Lloc de residència - Adreça de la persona
     */
    public String getAdreca() {
        return adreca;
    }

    /**
     * Accessor d'escriptura de l'adreça de la persona.
     *
     * @param adreca Lloc de residència - Adreça de la persona
     */
    public void setAdreca(String adreca) {
        this.adreca = adreca;
    }

    /**
     * Accessor de lectura del Primer cognom de la persona.
     *
     * @return Primer cognom de la persona
     */
    public String getCognom1() {
        return cognom1;
    }

    /**
     * Accessor d'escriptura del Primer cognom de la persona.
     *
     * @param cognom1 Primer cognom de la persona
     */
    public void setCognom1(String cognom1) {
        this.cognom1 = cognom1;
    }

    /**
     * Accessor de lectura del Segon cognom de la persona.
     *
     * @return Segon cognom de la persona
     */
    public String getCognom2() {
        return cognom2;
    }

    /**
     * Accessor d'escriptura del Segon cognom de la persona.
     *
     * @param cognom2 Segon cognom de la persona
     */
    public void setCognom2(String cognom2) {
        this.cognom2 = cognom2;
    }

    /**
     * Accessor de la Data de naixement de la persona.
     *
     * @return Data de naixement de la persona
     */
    public Date getDatanaixement() {
        return datanaixement;
    }

    /**
     * Accessor d'escriptura de la Data de naixement de la persona.
     *
     * @param datanaixement Data de naixement de la persona
     */
    public void setDatanaixement(Date datanaixement) {
        this.datanaixement = datanaixement;
    }

    /**
     * Accessor de lectura del codi postal de la persona.
     *
     * @return  Lloc de residència - Codi Postal de la persona
     */
    public String getDistrictepostal() {
        return districtepostal;
    }

    /**
     * Accessor d'escriptura del codi postal de la persona.
     *
     * @param districtepostal Lloc de residència - Codi Postal de la persona
     */
    public void setDistrictepostal(String districtepostal) {
        this.districtepostal = districtepostal;
    }

    /**
     * Accessor de lectura de la foto de la persona.
     *
     * @return Foto de la persona
     */
    public String getFoto() {
        return foto;
    }

    /**
     * Accessor d'escriptura de la foto de la persona.
     *
     * @param foto Foto de la persona
     */
    public void setFoto(String foto) {
        this.foto = foto;
    }

    /**
     * Accessor de lectura de l'idioma de la persona..
     *
     * @return Idioma de la persona
     */
    public String getIdioma() {
        return idioma;
    }

    /**
     * Accessor d'escriptura de l'idioma de la persona.
     *
     * @param idioma Idioma de la persona
     */
    public void setIdioma(String idioma) {
        this.idioma = idioma;
    }

    /**
     * Accessor de lectura de la localitat de la persona.
     *
     * @return Lloc de residència - Localitat de la persona
     */
    public String getLocalitat() {
        return localitat;
    }

    /**
     * Accessor d'escriptura de la localitat de la persona.
     *
     * @param localitat Lloc de residència - Localitat de la persona
     */
    public void setLocalitat(String localitat) {
        this.localitat = localitat;
    }

    /**
     * Accessor de lectura del Nom de la persona.
     *
     * @return Nom de la persona
     */
    public String getNom() {
        return nom;
    }

    /**
     * Accessor d'escriptura del Nom de la persona.
     *
     * @param nom Nom de la persona
     */
    public void setNom(String nom) {
        this.nom = nom;
    }

    /**
     * Accessor de lectura del País de la persona.
     *
     * @return Lloc de residència - País de la persona
     */
    public String getPais() {
        return pais;
    }

    /**
     * Accessor d'escriptura del País de la persona.
     *
     * @param pais Lloc de residència - País de la persona
     */
    public void setPais(String pais) {
        this.pais = pais;
    }

    /**
     * Accessor de lectura de la provincia de la persona.
     *
     * @return Lloc de residència - provincia de la persona
     */
    public String getProvincia() {
        return provincia;
    }

    /**
     * Accessor d'escriptura de la provincia de la persona.
     *
     * @param provincia Lloc de residència - provincia de la persona
     */
    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }
    
    /**
     * Accessor d'escriptura del tractament de la persona.
     *
     * @param tracte representa el tractament de la persona (Sr., Sra, ...) i,
     * indirectament, el seu sexe. Per defecte es posa " Sr."
     */
    public final void setTracte(String tracte) {
        this.tracte = (!tracte.equals("")) ? tracte : EOlympicsHelper.TRACTE[0];
    }

    /**
     * Accessor de lectura del tractament de la persona.
     *
     * @return tractament de la persona (Sr., Sra, ...).
     */
    public String getTracte() {
        return this.tracte;
    }

    /**
     * Accessor d'escriptura del sexe de la persona.
     *
     * @param sexe representa el sexe de la persona (Sense dades, Home , Dona)
     * Per defecte es posa "Sense dades"
     */
    public final void setSexe(String sexe) {
        this.sexe = (!sexe.equals("")) ? sexe : EOlympicsHelper.SEXE[0];
    }

    /**
     * Accessor de lectura del sexe de la persona.
     *
     * @return sexe de la persona (Sense dades, Home, Dona).
     */
    public String getSexe() {
        return this.sexe;
    }

    /**
     * Accessor d'escriptura del Tipus d'Identificador del document de la persona.
     *
     * @param tracte representa el tipus de document de la persona (NIF, NIE, ...)<
     * Per defecte es posa "NIF"
     */
    public final void setTipusDocumentId(String pTipusDocumentId) {
        this.tipusDocumentId = (!pTipusDocumentId.equals("")) ? pTipusDocumentId : EOlympicsHelper.TIPUS_ID[0];
    }

    /**
     * Accessor de lectura del Tipus d'Identificador del document de la persona.
     *
     * @return tipus de document de la persona (NIF, NIE, ...)
     */
    public String getTipusDocumentId() {
        return this.tipusDocumentId;
    }

}
